package com.starpl.mobile.android.monthunsae.november.component;

import android.content.Context;
import android.graphics.Color;
import android.util.TypedValue;
import android.view.Gravity;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.starpl.mobile.android.platform.common.DisplayUtil;

/**
 * 홈 메뉴 버튼 객체 클래스, 동적 버튼 배치에 사용하는 클래스
 * 
 * @author 우연화
 * @since 2011.03.16
 */
public class MenuButtonLayout extends FrameLayout
{
	private LinearLayout mLlButtonLayout;
	private ImageView mIvButton;
	private TextView mTvButton;

	public MenuButtonLayout(Context context)
	{
		super(context);
		mLlButtonLayout = new LinearLayout(context);
		mIvButton = new ImageView(context);
		mTvButton = new TextView(context);
		
		LayoutParams layoutParam = new LayoutParams(DisplayUtil.DPFromPixel(140), LayoutParams.WRAP_CONTENT);
		LayoutParams imageParam = new LayoutParams(DisplayUtil.DPFromPixel(120), DisplayUtil.DPFromPixel(100));
		
		// 버튼 레이아웃 세팅
		mLlButtonLayout.setLayoutParams(layoutParam);
		mLlButtonLayout.setPadding(0, 5, 0, 10);
		mLlButtonLayout.setOrientation(LinearLayout.VERTICAL);
		mLlButtonLayout.setGravity(Gravity.CENTER);
		
		// 버튼 이미지 세팅
		mIvButton.setLayoutParams(imageParam);
		
		// 버튼 텍스트 세팅
		mTvButton.setLayoutParams(layoutParam);
		mTvButton.setGravity(Gravity.CENTER);
		mTvButton.setTextColor(Color.WHITE);
		mTvButton.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
	}
	
	public FrameLayout setButton(int resource, String text, int index)
	{
		mIvButton.setBackgroundResource(resource);
		mIvButton.setTag(index);
		mTvButton.setText(text);
		
		mLlButtonLayout.addView(mIvButton);
		mLlButtonLayout.addView(mTvButton);
		
		this.addView(mLlButtonLayout);
		
		return this;
	}
	
	public FrameLayout setButton(ImageView imageView, String text, int keywordIdx)
	{
		mIvButton = imageView;
		mTvButton.setText(text);
		mTvButton.setSingleLine();
		
		mLlButtonLayout.addView(mIvButton);
		mLlButtonLayout.addView(mTvButton);

		this.addView(mLlButtonLayout);
		
		return this;
	}

	/**
	 * 버튼의 이미지뷰 객체를 반환합니다.
	 * 
	 * @return 버튼 이미지뷰
	 */
	public ImageView getIvButton()
	{
		return mIvButton;
	}

	/**
	 * 버튼의 이미지뷰를 세팅합니다.
	 * 
	 * @param mIvButton
	 */
	public void setIvButton(ImageView mIvButton)
	{
		this.mIvButton = mIvButton;
	}

	/**
	 * 버튼의 레이아웃을 반환합니다.
	 * 
	 * @return
	 */
	public LinearLayout getLlButtonLayout()
	{
		return mLlButtonLayout;
	}

	/**
	 * 버튼의 텍스트뷰를 반환합니다.
	 * 
	 * @return
	 */
	public TextView getTvButton()
	{
		return mTvButton;
	}
}
